const express = require('express');
const app = express();
const fs = require('fs');
// const bodyParser = require('body-parser')



// 使用内置中间件 => 配置静态资源
// app.use(express.static('public'))



// 使用自定义中间件 => 配置静态资源
// 使用了高阶函数 => 柯里化函数
function myStatic(dir) {
    return (req, res, next) => {
        //得到资源的path
        let path = req.path;
        //如果是根路径,修正为 /index.html
        if (path === '/') {
            path = '/index.html';
        }
        //得到资源的绝对路径
        const filePath = __dirname + '/' + dir + path;

        //读取资源文件
        fs.readFile(filePath, (error, data) => {
            //如果文件不存在
            if (error) {
                next();
            } else {
                //将文件数据返回
                // res.end(data)  // data是buffer对象
                res.send(data.toString());
            }
        })
    }
}
app.use(myStatic('public'));


// 使用第三方中间件  解析请求体参数, 并保存到req.body上
// https://blog.csdn.net/maodun_2013/article/details/91383494
// app.use(bodyParser.urlencoded({extended: false}))
// app.use(bodyParser.json())

// 也可以使用内置的中间件
app.use(express.urlencoded({
    extended: false
}));
app.use(express.json());



//注册路由(get 请求)
app.get('/middleware', (req, res) => {
    res.send('middleware response');
})

app.post('/middleware', (req, res) => {
    const {
        b,
        c
    } = req.body;
    console.log('请求体参数', b, c);
    res.send('post middleware response');
})

//启动服务,监听指定端口
app.listen('8989', () => {
    console.log('服务启动成功: http://localhost:8989');
})